package com.cms.jy.draft.service;

import java.io.IOException;
import java.util.List;

import com.cms.jy.draft.entity.*;
import com.cms.jy.draft.util.DraftConfigReader;
import com.cms.jy.draft.util.DraftSettingsReader;

/**
 * 草稿模板服务类
 * 演示如何使用草稿配置实体类和工具类
 */
public class DraftTemplateService {
    
    /**
     * 加载草稿模板
     * @param templatePath 模板路径
     * @return 草稿内容对象
     * @throws IOException IO异常
     */
    public DraftContent loadDraftTemplate(String templatePath) throws IOException {
        String contentPath = templatePath + "/draft_content.json";
        String metaInfoPath = templatePath + "/draft_meta_info.json";
        String settingsPath = templatePath + "/draft_settings";
        String agencyConfigPath = templatePath + "/draft_agency_config.json";
        String virtualStorePath = templatePath + "/draft_virtual_store.json";
        
        // 读取草稿内容
        DraftContent draftContent = DraftConfigReader.readDraftContent(contentPath);
        
        // 读取元信息
        DraftMetaInfo metaInfo = DraftConfigReader.readDraftMetaInfo(metaInfoPath);
        
        // 读取设置
        DraftSettings settings = DraftSettingsReader.readDraftSettings(settingsPath);
        
        // 读取代理配置
        DraftAgencyConfig agencyConfig = DraftConfigReader.readDraftAgencyConfig(agencyConfigPath);
        
        // 读取虚拟存储配置
        DraftVirtualStore virtualStore = DraftConfigReader.readDraftVirtualStore(virtualStorePath);
        
        // 在实际应用中，你可能需要将这些信息整合到 draftContent 对象中
        // 或者创建一个更大的容器对象来包含所有信息
        
        return draftContent;
    }
    
    /**
     * 获取草稿中的视频材料
     * @param draftContent 草稿内容
     * @return 视频材料列表
     */
    public List<Video> getVideoMaterials(DraftContent draftContent) {
        if (draftContent.getMaterials() != null) {
            return draftContent.getMaterials().getVideos();
        }
        return new java.util.ArrayList<>();
    }
    
    /**
     * 获取草稿中的音频材料
     * @param draftContent 草稿内容
     * @return 音频材料列表
     */
    public List<Audio> getAudioMaterials(DraftContent draftContent) {
        if (draftContent.getMaterials() != null) {
            return draftContent.getMaterials().getAudios();
        }
        return new java.util.ArrayList<>();
    }
    
    /**
     * 获取草稿中的文本材料
     * @param draftContent 草稿内容
     * @return 文本材料列表
     */
    public List<Text> getTextMaterials(DraftContent draftContent) {
        if (draftContent.getMaterials() != null) {
            return draftContent.getMaterials().getTexts();
        }
        return new java.util.ArrayList<>();
    }
    
    /**
     * 获取草稿中的特效材料
     * @param draftContent 草稿内容
     * @return 特效材料列表
     */
    public List<Effect> getEffectMaterials(DraftContent draftContent) {
        if (draftContent.getMaterials() != null) {
            return draftContent.getMaterials().getEffects();
        }
        return new java.util.ArrayList<>();
    }
    
    /**
     * 获取草稿中的转场材料
     * @param draftContent 草稿内容
     * @return 转场材料列表
     */
    public List<Transition> getTransitionMaterials(DraftContent draftContent) {
        if (draftContent.getMaterials() != null) {
            return draftContent.getMaterials().getTransitions();
        }
        return new java.util.ArrayList<>();
    }
    
    /**
     * 获取草稿中的视频效果材料
     * @param draftContent 草稿内容
     * @return 视频效果材料列表
     */
    public List<VideoEffect> getVideoEffectMaterials(DraftContent draftContent) {
        if (draftContent.getMaterials() != null) {
            return draftContent.getMaterials().getVideo_effects();
        }
        return new java.util.ArrayList<>();
    }
}